var todayDateTime=new Date();
todayMonth0s = todayDateTime.getMonth();
todayMonth = (todayMonth0s + 1) % 13;
todayDay = todayDateTime.getDate();
todayYear = todayDateTime.getFullYear();

YAHOO.namespace("calendar");


/*
 * handleSelect - Handles the calendar date select event from the YUI calendar.
 * Uses args, an array of date fields representing the dates that were selected.
 */
function handleSelect(type,args,obj) {	
        var dates = args[0]; 
        var date = dates[0];
        var year = date[0], month = date[1], day = date[2];
        
        var txtDate1 = document.getElementById( input_id );
        if ( day < 10 ) {
            day = "0" + day;
        }
        if ( month < 10 ) {
            month = "0" + month;
        }
        txtDate1.value = month + "/" + day + "/" + year;

	// If the start date was selected, modify the end date's calendar to only
	// allow dates on the same day or later.
        if ( input_id == start_date_id ) {
	    // Parse the end date
            var end_date = document.getElementById( end_date_id ).value;
            var date_array = end_date.split( '/', 3);
            var end_month_input = date_array[0];
            var end_day_input = date_array[1];
            var end_year_input = date_array[2];

	    var endInputDate = new Date(end_year_input, end_month_input, end_day_input);
	    var selectedStartDate = new Date(year, month, day);

	    /// Compare the end date text input with the selected date
	    if ( endInputDate < selectedStartDate ) {
                changeDate( txtDate1.value );		
            }

	    // TODO: Update return calendar min selectable date so that it's equal to the selected date
        }
    }

    function updateCal() {
        var txtDate1 = document.getElementById( input_id );

        if (txtDate1.value != "") {
            YAHOO.calendar.cal1.select(txtDate1.value);
            
            var firstDate = YAHOO.calendar.cal1.getSelectedDates()[0];
            YAHOO.calendar.cal1.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear());

            YAHOO.calendar.cal1.render();
        }
    }

    
    
    
    // For this example page, stop the Form from being submitted, and update the cal instead
    function handleSubmit(e) {
        updateCal();
        YAHOO.util.Event.preventDefault(e);
    }

    function initCalendar( cal_title ) {
        var st = document.getElementById('search_type');
        if( st && st.value == 'hotel' ) {
            start_date_id = 'date_start_hotel';
            end_date_id = 'date_end_hotel';
            if(!input_id.match(/_hotel/))
                input_id += '_hotel';
        }
        else {
            start_date_id = 'date_start';
            end_date_id = 'date_end';
        }
        var cur_month = todayMonth;
        var cur_day = todayDay;
        var cur_year = todayYear; 

        // Get an input date to use for the selectable date range
        if ( input_id == end_date_id && depart_date != '' ) {
            // Return date
            var depart_date = document.getElementById( start_date_id ).value;
            var date_array = depart_date.split( '/', 3);
            var month_input = (date_array[0] - 1) % 12;
            var day_input = parseInt(date_array[1]);
            var year_input = date_array[2];

            // Use departure date
            var input_date = new Date( year_input, month_input, day_input );
        } else {
            // Departure date
            // Use the current date (today)
            var month_input = todayMonth0s; // convert to 0-based number for Date
            var day_input = todayDay;
            var year_input = todayYear;
            var input_date = new Date( year_input, month_input, day_input );
        }

    // Set the minumum selectable date to the input date plus one day
    // This uses Date.setDate(date) which sets the day of the month.
    // (Note: If this number exceeds the number of days in the month, the Date will 
    // automatically roll over to the next month/year).

        var min_date = new Date(input_date);
        // Extract the start date if specified in input
        if ( document.getElementById( input_id ) && document.getElementById( input_id ).value != '' ) {
            var date_split = document.getElementById( input_id ).value;
            var date_array = date_split.split( '/', 3);
            if ( cur_month <= date_array[0] - 1 ) {    
                var start_month = date_array[0] - 1;
            } else {
                var start_month = date_array[0];
            }
            var start_day = date_array[1];
            var start_year = date_array[2];     
        } else {
            var start_month = todayMonth;
            var start_day = todayDay;
            var start_year = todayYear; 
        }


    // Set the maximum selectable date to 333 days from today
        var max_date = new Date(cur_year, cur_month - 1, cur_day + 333);

    start_date_str = start_month+"/"+start_year;
        YAHOO.calendar.cal1 = new YAHOO.widget.CalendarGroup("cal1","cal1Container", 
                                                                    { title: cal_title,
                                                                        pagedate: start_date_str,
                                                                        mindate: min_date,
                                                                        maxdate: max_date,
                                                                        close: true
                                                                        });
                                                                        
                                                
        YAHOO.calendar.cal1.selectEvent.subscribe(handleSelect, YAHOO.calendar.cal1, true);
        YAHOO.util.Event.addListener("update", "click", updateCal);
        YAHOO.util.Event.addListener("dates", "submit", handleSubmit);

    
        var mySelectHandler = function(type,args,obj) { 
            this.hide();

            }; 

        YAHOO.calendar.cal1.selectEvent.subscribe(mySelectHandler, YAHOO.calendar.cal1, true);      
        var txtDate1 = document.getElementById( input_id ); 
        var start_date = document.getElementById( start_date_id );  
        var end_date = document.getElementById( end_date_id );  
        //YAHOO.calendar.cal1.select(txtDate1.value);
        YAHOO.calendar.cal1.addRenderer(start_date.value, YAHOO.calendar.cal1.renderCellStyleHighlight1);
        YAHOO.calendar.cal1.addRenderer(end_date.value, YAHOO.calendar.cal1.renderCellStyleHighlight2);
        YAHOO.calendar.cal1.render();

    }

    YAHOO.util.Event.addListener(window, "load", initCalendar);

    launchCalendar = function ( type, title ) {

        input_id = type;
        initCalendar( title );
        var calendar = document.getElementById( 'cal1Container' );
        var div = document.getElementById( type + '_calendar' );
        div.appendChild( calendar );
        calendar.style.display = '';
        div.style.display = '';
		calendar.style.width = '315px';
		calendar.style.height = 'auto';
	 }


